package cn.itcast.openai;

import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.models.chat.completions.ChatCompletionCreateParams;

/**
 * @author zzw
 */
public class CompletionsMultipleRoundsDemo {

    private static OpenAIClient client;

    public static void main(String[] args) {
        // 创建客户端，指定 API Key 与 baseUrl，其中API KEY从系统环境变量中获取
        client = OpenAIOkHttpClient.builder()
                                   .baseUrl("https://dashscope.aliyuncs.com/compatible-mode/v1")
                                   .apiKey("sk-a1facdd2bd864836ae701a1f8e60cdb0")
                                   .build();

        // 第一次对话
        chat("我叫花和尚，请记住我");
        System.out.println("------------------------");
        // 第二次对话
        chat("我是谁？");
    }

    public static void chat(String userMessage) {
        // 构造聊天参数
        var createParams = ChatCompletionCreateParams.builder()
                                                     // 指定模型
                                                     .model("qwen-plus")
                                                     // 添加用户消息
                                                     .addUserMessage(userMessage)
                                                     .build();

        // 调用接口，获取结果并打印
        client.chat().completions()
              .create(createParams)
              .choices()
              .stream()
              .flatMap(choice -> choice.message().content().stream())
              .forEach(System.out::println);
    }

}
